package com.martin.lib_base.interfaces

import com.martin.lib_base.ktx.loge


/**
 * 心跳自动监听器
 * @focus 仅允许单独类实现并且不可为Object
 */
abstract class IHeartAutoListener {

    // 目标秒数
    open var target = 99

    // 当前计数
    open var current = 0

    // 是否启用
    open var enable = true

    // 是否已触发目标
    open var isTarget: Boolean = false

    /**
     * 心跳事件
     */
    open fun onHeart() {
        if (!enable) {
            return
        }
        if (current >= target) {
            handleTarget()
        } else {
            current++
        }
    }

    /**
     * 执行触发
     */
    fun handleTarget() {
        if (!enable) {
            return
        }
        current = 0
        onTarget()
    }

    /**
     * 目标达成触发
     */
    protected abstract fun onTarget()

    protected fun showLog(log: String) {
        loge("${this.javaClass.simpleName} : $log")
    }
}